home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Frameworks / Grant's CGI Framework 1.0b12 / Apple Events / AEFunc.c next >
Text File  |  1995-12-09  |  5KB  |  216 lines

  1. /*****
  2.  *
  3.  *    AEFunc.c
  4.  *
  5.  *    This is a support file for "Grant's CGI Framework".
  6.  *    Please see the license agreement that accompanies the distribution package
  7.  *    for licensing details.
  8.  *
  9.  *    Copyright ©1995 by Grant Neufeld
  10.  *    grant@acm.com
  11.  *    http://arpp1.carleton.ca/grant/
  12.  *
  13.  *****/
  14.  
  15. #include "MyConfiguration.h"
  16.  
  17. #include <stdlib.h>
  18.  
  19. #include "compiler_stuff.h"
  20. #include "globals.h"
  21.  
  22. #include "DebugUtil.h"
  23. #include "EventUtil.h"
  24. #include "ErrorUtil.h"
  25. #include "MemoryUtil.h"
  26.  
  27. #include "AEFunc.h"
  28.  
  29.  
  30. /***  FUNCTIONS  ***/
  31.  
  32. /* IM:IAC 4-35 */
  33. OSErr
  34. MyGotRequiredParams ( AppleEvent *theAppleEvent )
  35. {
  36.     OSErr        theErr;
  37.     DescType    returnedType;
  38.     Size        actualSize;
  39.     
  40.     theErr = AEGetAttributePtr ( theAppleEvent, keyMissedKeywordAttr, typeWildCard,
  41.         &returnedType, nil, nil, &actualSize );
  42.     
  43.     if ( theErr == errAEDescNotFound )
  44.     {
  45.         /* all required parameters were retrieved */
  46.         return noErr;
  47.     }
  48.     else if ( theErr == noErr )
  49.     {
  50.         /* required parameter was missed */
  51.         return errAEParamMissed;
  52.     }
  53.     else
  54.     {
  55.         return theErr;
  56.     }
  57. } /* MyGotRequiredParams */
  58.  
  59.  
  60. /* IM:IAC 5-23 */
  61. pascal Boolean
  62. MyAEIdleFunc ( const EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn )
  63. {
  64.     Boolean        theResult = false;
  65.     
  66.     switch ( theEvent->what )
  67.     {
  68.         #if kCompileWithForeground
  69.         
  70.         case updateEvt :
  71.         case activateEvt :
  72.             break;
  73.         
  74.         case osEvt :
  75.             /* MyAdjustCursor ( theEvent->where, theMouseRgn ); */
  76.             doOsEvt ( theEvent );
  77.             break;
  78.         
  79.         #endif    /* kCompileWithForeground */
  80.  
  81.         
  82.         case nullEvent :
  83.             /* *mouseRgn = theMouseRgn; */
  84.             *sleepTime = gSleepTicks;    /* may need to change to use correct value for app */
  85.             
  86.             /* I'm not 100% certain that this should be here... */
  87.             #if kCompileWithThreadsOptional
  88.             if ( gHasThreadMgr )
  89.             #endif
  90.             {
  91.                 YieldToAnyThread ();
  92.             }
  93.             break;
  94.     }
  95.     
  96.     return theResult;
  97. } /* MyAEIdleFunc */
  98.  
  99.  
  100. #pragma mark -
  101.  
  102. /* get a string from a parameter */
  103. OSErr
  104. AEGetParamString ( const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, char **theString, char *tempBuffer, long bufferSize )
  105. {
  106.     OSErr        theErr;
  107.     DescType    actualType;
  108.     Size        actualSize;
  109.     
  110.     my_assert ( theString != nil, "\pAEGetParamString: theString ptr is nil" );
  111.     my_assert ( *theString == nil, "\pAEGetParamString: string with existing chars received" );
  112.     my_assert ( theAppleEvent != nil, "\pAEGetParamString: theAppleEvent ptr is nil" );
  113.     my_assert ( tempBuffer != nil, "\pAEGetParamString: tempBuffer ptr is nil" );
  114.     
  115.     theErr = AEGetParamPtr ( theAppleEvent, theAEKeyword, typeChar,
  116.         &actualType, (Ptr)tempBuffer, bufferSize, &actualSize );
  117.     
  118.     if ( theErr == noErr )
  119.     {
  120.         my_assert ( actualSize <= bufferSize, "\pAEGetParamString: actual param size too big" );
  121.         
  122.         /* if the parameter was present, allocate space to copy it into destination string */
  123.         *theString = (char *) MyNewPtr ( actualSize + 1, &theErr );
  124.         
  125.         if ( *theString != nil )
  126.         {
  127.             /* copy the tempBuffer into the destination string */
  128.             BlockMove ( tempBuffer, *theString, actualSize );
  129.             
  130.             /* put a null terminator at the end of the string */
  131.             (*theString)[actualSize] = nil;
  132.         }
  133.     }
  134.     
  135.     return theErr;
  136. } /* AEGetParamString */
  137.  
  138.  
  139. /* copy a parameter into an existing string block */
  140. OSErr
  141. AEGetParamStringNoAlloc (
  142.     const AppleEvent *    theAppleEvent,
  143.     AEKeyword            theAEKeyword,
  144.     char *                theString,
  145.     long                 stringSize )
  146. {
  147.     OSErr        theErr;
  148.     DescType    actualType;
  149.     Size        actualSize;
  150.     
  151.     my_assert ( theString != nil, "\pAEGetParamString: theString ptr is nil" );
  152.     my_assert ( theAppleEvent != nil, "\pAEGetParamString: theAppleEvent ptr is nil" );
  153.     my_assert ( stringSize != nil, "\pAEGetParamString: stringSize is nil" );
  154.     
  155.     theErr = AEGetParamPtr ( theAppleEvent, theAEKeyword, typeChar,
  156.         &actualType, (Ptr)theString, stringSize, &actualSize );
  157.     
  158.     return theErr;
  159. } /* AEGetParamString */
  160.  
  161.  
  162. #pragma segment AppleEvent
  163. /* get a short from a parameter */
  164. OSErr
  165. AEGetParamShort ( const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, short *theShort, char *tempBuffer, long bufferSize )
  166. {
  167.     OSErr        theErr;
  168.     DescType    actualType;
  169.     Size        actualSize;
  170.     
  171.     my_assert ( theShort != nil, "\pAEGetParamShort: theShort ptr is nil" );
  172.     my_assert ( theAppleEvent != nil, "\pAEGetParamShort: theAppleEvent ptr is nil" );
  173.     my_assert ( tempBuffer != nil, "\pAEGetParamShort: tempBuffer ptr is nil" );
  174.     
  175.     theErr = AEGetParamPtr
  176.         ( theAppleEvent, theAEKeyword, typeChar, &actualType, (Ptr)tempBuffer, bufferSize, &actualSize );
  177.     
  178.     if ( theErr == noErr )
  179.     {
  180.         my_assert ( actualSize <= bufferSize, "\pAEGetParamShort: actual param size too big" );
  181.         
  182.         /* terminate the buffer with a null byte so it will be a proper C string */
  183.         tempBuffer[actualSize] = nil;
  184.         
  185.         *theShort = atoi ( tempBuffer );
  186.     }
  187.     
  188.     return theErr;
  189. } /* AEGetParamShort */
  190.  
  191.  
  192. /* get a long value from a parameter */
  193. OSErr
  194. AEGetParamLong ( const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, long *theLong )
  195. {
  196.     OSErr        theErr;
  197.     DescType    actualType;
  198.     Size        actualSize;
  199.     
  200.     my_assert ( theLong != nil, "\pAEGetParamShort: theLong ptr is nil" );
  201.     my_assert ( theAppleEvent != nil, "\pAEGetParamShort: theAppleEvent ptr is nil" );
  202.     
  203.     theErr = AEGetParamPtr
  204.         ( theAppleEvent, theAEKeyword, typeLongInteger, &actualType, (Ptr)theLong, sizeof(long), &actualSize );
  205.     
  206.     if ( theErr == noErr )
  207.     {
  208.         my_assert ( actualSize <= sizeof(long), "\pAEGetParamLong: actual param size too big" );
  209.     }
  210.     
  211.     return theErr;
  212. } /* AEGetParamShort */
  213.  
  214.  
  215. /*****  EOF  *****/
  216.